package cn.fl.project.transform;

import cn.cmm.base.framework.utils.BaseLogUtils;
import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.project.dto.PrjQuatPrpsDTO;
import cn.fl.project.vo.PrjQuatPrpsVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 项目报价方案表 转换器
 * @Description: VO是客户端传递数据到服务端进行转换的数据
 * @Description: VO转换数据变成DTO传递到服务端
 * @Description: VO不能在服务端出现
 */
public class PrjQuatPrpsVOTransform {

	private static final Logger logger = LoggerFactory.getLogger(PrjQuatPrpsVOTransform.class);
	/**
	 * DTO 转  VO
	 * @param  dto
	 * @return PrjQuatPrpsVO
	 */
	public static PrjQuatPrpsVO toVO(PrjQuatPrpsDTO dto) {
		PrjQuatPrpsVO  vo = null;
		if (dto != null) {
			vo = new PrjQuatPrpsVO();
			vo.setId(dto.getId());
			vo.setPrjId(dto.getPrjId());//项目ID
			vo.setTotLsItmAmt(dto.getTotLsItmAmt());//租赁物件总价值（元）
			vo.setContAmt(dto.getContAmt());//合同总额（元）
			vo.setLsPd(dto.getLsPd());//租赁期数
			vo.setLsPdUntCd(dto.getLsPdUntCd());//租赁期数单位（PRJ0010）
			vo.setAnnIntRatePct(dto.getAnnIntRatePct());//租赁年利率（%）
			vo.setIntRateRsPct(dto.getIntRateRsPct());//利率上浮比例（%）
			vo.setPayWayCd(dto.getPayWayCd());//支付方式（PRJ0009）
			vo.setActLsAmt(dto.getActLsAmt());//实际融资租赁价值（元）
			vo.setIrrPct(dto.getIrrPct());//实际收益率(IRR)
			vo.setEachEstRntAmt(dto.getEachEstRntAmt());//每期预估租金（元）
			vo.setLsCalWayCd(dto.getLsCalWayCd());//租赁计算方式（PRJ0012）
			vo.setIntRateWayCd(dto.getIntRateWayCd());//租赁年利率计算方式（PRJ0011）
			vo.setLsCoe(dto.getLsCoe());//租赁系数
			vo.setDpstHdlWayCd(dto.getDpstHdlWayCd());//保证金处理方式（PRJ0013）
			vo.setExpHdlWayCd(dto.getExpHdlWayCd());//租赁期满处理方式（PRJ0014）
			vo.setNoPayWayCd(dto.getNoPayWayCd());//不还款处理方式（PRJ0015）
			vo.setLsCalWayCdNm(dto.getLsCalWayCd());
			vo.setIntRateWayCdNm(dto.getIntRateWayCdNm());
			vo.setExpHdlWayCdNm(dto.getExpHdlWayCdNm());
			vo.setDpstHdlWayCdNm(dto.getDpstHdlWayCdNm());
			vo.setPayWayCdNm(dto.getPayWayCdNm());
			vo.setLsPdUntCdNm(dto.getLsPdUntCdNm());
			vo.setNoPayWayCdNm(dto.getNoPayWayCdNm());
			vo.setPrjQuatPrpsFeelist(PrjQuatPrpsFeeVOTransform.toVOList(dto.getPrjQuatPrpsFeelist()));
			vo.setPrjQuatPrpsPaySchList(PrjQuatPrpsPaySchVOTransform.toVOList(dto.getPrjQuatPrpsPaySchList()));
			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getMdfUsrId());//修改人
			vo.setIsDel(dto.getIsDel());//是否删除
			vo.setIsFormalPrps(dto.getIsFormalPrps());//是否为默认的方案
			vo.setIsFormalPrpsNm(dto.getIsFormalPrpsNm());
			vo.setPrpsCfgId(dto.getPrpsCfgId());
			vo.setPrpsCfgNm(dto.getPrpsCfgNm());
			vo.setIsAllowAdd(dto.getIsAllowAdd());//是否允许添加费用项
			vo.setIsAllowChg(dto.getIsAllowChg());//是否允许修改
			vo.setPrpsTypCd(dto.getPrpsTypCd());//报价方案分类
			vo.setPrpsTypCdNm(dto.getPrpsTypCdNm());//方案类型
			vo.setQuatSplitPct(dto.getQuatSplitPct());
			vo.setSysCd(dto.getSysCd());
			vo.setOrgCd(dto.getOrgCd());
			vo.setTotalIntAmt(dto.getTotalIntAmt());
			vo.setTempPayList(PrjQuatPrpsPaySchVOTransform.toVOList(dto.getTempPayList()));
			vo.setTotalPrinAmt(dto.getTotalPrinAmt());
			vo.setTotalRemPrinAmt(dto.getTotalRemPrinAmt());
			vo.setTotalRntAmt(dto.getTotalRntAmt());
			vo.setFirstPayAmt(dto.getFirstPayAmt());
			vo.setIrrPct2(dto.getIrrPct2());
			vo.setInitLsPct(dto.getInitLsPct());
			vo.setSplBackPct(dto.getSplBackPct());
			vo.setPreRntPct(dto.getPreRntPct());
			vo.setLsPd2(dto.getLsPd2());
			vo.setGhRntAmt(dto.getGhRntAmt());
			vo.setSzRntAmt(dto.getSzRntAmt());
			vo.setGhActLsAmt(dto.getGhActLsAmt());
			vo.setIsBp(dto.getIsBp());
			vo.setBusinessInsCd(dto.getBusinessInsCd());
			vo.setTempActLsAmt(dto.getTempActLsAmt());
			vo.setPolicyTypCd(dto.getPolicyTypCd());
            vo.setRebateIrr(dto.getRebateIrr());
            vo.setCheckResultDesc(dto.getCheckResultDesc());
            vo.setAnnIntRatePct2(dto.getAnnIntRatePct2());
            vo.setTenThouCoef(dto.getTenThouCoef());
            /**
			 * 新加机构编码 REQ-2914
			 */
            vo.setInsCode(dto.getInsCode());
            vo.setVersion(dto.getVersion());
			//是否低息
			vo.setIsLowBiz(dto.getIsLowBiz());
			vo.setCstIrr(dto.getCstIrr());
			vo.setSmallLoanAmt(dto.getSmallLoanAmt());
			vo.setIsLowDownPayment(dto.getIsLowDownPayment());
			vo.setChlDpstPwayCd(dto.getChlDpstPwayCd());
			vo.setRtnPdStart(dto.getRtnPdStart());
			vo.setRtnPdEnd(dto.getRtnPdEnd());
			vo.setSpeLsPd(dto.getSpeLsPd());
            vo.setSpecialBusinessType(dto.getSpecialBusinessType());
            vo.setIsNeedOpenWin(dto.getIsNeedOpenWin());
            // 捆绑租金补助服务
			vo.setRentAllowanceService(dto.getRentAllowanceService());
			vo.setOneCityOnePolicyTypeCd(dto.getOneCityOnePolicyTypeCd());
        }
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param vo
	 * @return PrjQuatPrpsDTO
	 */
	public static PrjQuatPrpsDTO toDTO(PrjQuatPrpsVO vo) {
		PrjQuatPrpsDTO dto = null;
		if (vo != null) {
			dto = new PrjQuatPrpsDTO();
			dto.setId(vo.getId());
			dto.setPrjId(vo.getPrjId());//项目ID
			dto.setTotLsItmAmt(vo.getTotLsItmAmt());//租赁物件总价值（元）
			dto.setContAmt(vo.getContAmt());//合同总额（元）
			dto.setLsPd(vo.getLsPd());//租赁期数
			dto.setLsPdUntCd(vo.getLsPdUntCd());//租赁期数单位（PRJ0010）
			dto.setAnnIntRatePct(vo.getAnnIntRatePct());//租赁年利率（%）
			dto.setIntRateRsPct(vo.getIntRateRsPct());//利率上浮比例（%）
			dto.setPayWayCd(vo.getPayWayCd());//支付方式（PRJ0009）
			dto.setActLsAmt(vo.getActLsAmt());//实际融资租赁价值（元）
			dto.setIrrPct(vo.getIrrPct());//实际收益率(IRR)
			dto.setEachEstRntAmt(vo.getEachEstRntAmt());//每期预估租金（元）
			dto.setLsCalWayCd(vo.getLsCalWayCd());//租赁计算方式（PRJ0012）
			dto.setIntRateWayCd(vo.getIntRateWayCd());//租赁年利率计算方式（PRJ0011）
			dto.setLsCoe(vo.getLsCoe());//租赁系数
			dto.setDpstHdlWayCd(vo.getDpstHdlWayCd());//保证金处理方式（PRJ0013）
			dto.setExpHdlWayCd(vo.getExpHdlWayCd());//租赁期满处理方式（PRJ0014）
			dto.setNoPayWayCd(vo.getNoPayWayCd());//不还款处理方式（PRJ0015）
			dto.setLsCalWayCdNm(vo.getLsCalWayCd());
			dto.setIntRateWayCdNm(vo.getIntRateWayCdNm());
			dto.setExpHdlWayCdNm(vo.getExpHdlWayCdNm());
			dto.setDpstHdlWayCdNm(vo.getDpstHdlWayCdNm());
			dto.setPayWayCdNm(vo.getPayWayCdNm());
			dto.setLsPdUntCdNm(vo.getLsPdUntCdNm());
			dto.setNoPayWayCdNm(vo.getNoPayWayCdNm());
			dto.setPrjQuatPrpsFeelist(PrjQuatPrpsFeeVOTransform.toDTOList(vo.getPrjQuatPrpsFeelist()));
			dto.setPrjQuatPrpsPaySchList(PrjQuatPrpsPaySchVOTransform.toDTOList(vo.getPrjQuatPrpsPaySchList()));
			dto.setIsDel(vo.getIsDel());//是否删除
			dto.setIsFormalPrps(vo.getIsFormalPrps());//是否为默认的方案
			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getMdfUsrId());//修改人
			dto.setIsFormalPrpsNm(vo.getIsFormalPrpsNm());
			dto.setPrpsCfgId(vo.getPrpsCfgId());//配置id
			dto.setPrpsCfgNm(vo.getPrpsCfgNm());//配置名称
			dto.setIsAllowAdd(vo.getIsAllowAdd());//是否允许添加费用项
			dto.setIsAllowChg(vo.getIsAllowChg());//是否允许修改
			dto.setPrpsTypCd(vo.getPrpsTypCd());//报价方案分类
			dto.setPrpsTypCdNm(vo.getPrpsTypCdNm());//方案名称
			dto.setQuatSplitPct(vo.getQuatSplitPct());
			dto.setSysCd(vo.getSysCd());
			dto.setOrgCd(vo.getOrgCd());
			dto.setTotalIntAmt(vo.getTotalIntAmt());
			dto.setTempPayList(PrjQuatPrpsPaySchVOTransform.toDTOList(vo.getTempPayList()));
			dto.setTotalPrinAmt(vo.getTotalPrinAmt());
			dto.setTotalRemPrinAmt(vo.getTotalRemPrinAmt());
			dto.setTotalRntAmt(vo.getTotalRntAmt());
			dto.setFirstPayAmt(vo.getFirstPayAmt());
			dto.setIrrPct2(vo.getIrrPct2());
			dto.setInitLsPct(vo.getInitLsPct());
			dto.setSplBackPct(vo.getSplBackPct());
			dto.setPreRntPct(vo.getPreRntPct());
			dto.setLsPd2(vo.getLsPd2());
			dto.setGhRntAmt(vo.getGhRntAmt());
			dto.setSzRntAmt(vo.getSzRntAmt());
			dto.setIsBp(vo.getIsBp());
			dto.setBusinessInsCd(vo.getBusinessInsCd());
			dto.setGhActLsAmt(vo.getGhActLsAmt());
			dto.setTempActLsAmt(vo.getTempActLsAmt());
			dto.setPolicyTypCd(vo.getPolicyTypCd());
            dto.setRebateIrr(vo.getRebateIrr());//去除返利的irr的值
            dto.setCheckResultDesc(vo.getCheckResultDesc());
            dto.setAnnIntRatePct2(vo.getAnnIntRatePct2());
            dto.setTenThouCoef(vo.getTenThouCoef());
			/**
			 * 新加机构编码 REQ-2914
			 */
			dto.setInsCode(vo.getInsCode());
			dto.setVersion(vo.getVersion());
			//是否低息
			dto.setIsLowBiz(vo.getIsLowBiz());
			dto.setSmallLoanAmt(vo.getSmallLoanAmt());
			dto.setIsLowDownPayment(vo.getIsLowDownPayment());
			dto.setChlDpstPwayCd(vo.getChlDpstPwayCd());
			dto.setRtnPdStart(vo.getRtnPdStart());
			dto.setRtnPdEnd(vo.getRtnPdEnd());
			dto.setCstIrr(vo.getCstIrr());
			dto.setSpecialBusinessType(vo.getSpecialBusinessType());
			dto.setSpeLsPd(vo.getSpeLsPd());
			dto.setIsNeedOpenWin(vo.getIsNeedOpenWin());
			// 捆绑租金补助服务
			dto.setRentAllowanceService(vo.getRentAllowanceService());
			dto.setOneCityOnePolicyTypeCd(vo.getOneCityOnePolicyTypeCd());
		}
		return dto;
	}

	/**
	 * DTO集合 转 VO集合
	 * @param list
	 * @return List<PrjQuatPrpsVO>
	 */
	public static List<PrjQuatPrpsVO> toVOList(List<PrjQuatPrpsDTO> list) {
		List<PrjQuatPrpsVO>  voList = new ArrayList<PrjQuatPrpsVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (PrjQuatPrpsDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}

	/**
	 * VO集合 转 DTO集合
	 * @param list List<PrjQuatPrpsVO>
	 * @return List<PrjQuatPrpsDTO>
	 */
	public static List<PrjQuatPrpsDTO> toDTOList(List<PrjQuatPrpsVO> list) {
		List<PrjQuatPrpsDTO>  dtoList = new ArrayList<PrjQuatPrpsDTO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (PrjQuatPrpsVO vo : list) {
				dtoList.add(toDTO(vo));
			}
		}
		return dtoList;
	}
}
